import App from './App';

import Vue from 'vue';

Vue.prototype.headers = {
	'Content-Type': 'application/x-www-form-urlencoded',
};
// 网络请求超时时间
Vue.prototype.timeout = 5000;
Vue.prototype.loading_timeout = 5000;

// 测试
Vue.prototype.api_version = 'v1'; //app接口版本
Vue.prototype.socketpath = '';
// Vue.prototype.apiFilename = '/api/' + Vue.prototype.api_version;
Vue.prototype.apiFilename = '/api';
Vue.prototype.apiwss = 'wss://socket.qijiniu.com:8803'; // 本地
Vue.prototype.apiUrl = 'https://api.bms.qijiniu.com'; //api请求url 本地
Vue.prototype.webUrl = 'https://api.bms.qijiniu.com'; // 本地
Vue.prototype.webUrlss = 'https://api.bms.qijiniu.com'; //api请求url 本地

// Vue.prototype.apiwss = 'ws://120.78.158.98:8804'; // 本地
// Vue.prototype.apiwss = 'wss://socket.qijiniu.com:8803'; // 本地
// Vue.prototype.apiUrl = 'http://test.api.bms.qijiniu.com'; //api请求url 本地
// Vue.prototype.webUrl = 'http://test.api.bms.qijiniu.com'; // 本地
// Vue.prototype.webUrlss = 'http://test.api.bms.qijiniu.com'; //api请求url 本地

// 国际版标识 jojo
Vue.prototype.INTERNATIONAL_VERSION = false;
Vue.prototype.TEST_CONNECT = false;
// jojo
// Vue.prototype.TEST_CONNECT = true;
Vue.prototype.show_log = false;
Vue.prototype.show_data = false;
Vue.prototype.show_buffer = true;

// 蓝牙接收响应数据最后包   可能多个包
// 最长20个字节判断结束停止位 0x77并且长度校验
Vue.prototype.bluetooth_read_temp = [];
Vue.prototype.bluetooth_can_write = true;
// 工厂模式
Vue.prototype.READ_COMMAND_TASK_INDEX = -1;
Vue.prototype.WRITE_COMMAND_TASK = [
	{
		command_group_code: 0x00,
		done: false,
		type: '进入工厂模式',
		buffer: [0x56, 0x78],
	},
	{
		writeForce: true,
		done: false,
		type: '工厂模式-写入参数',
	},
	{
		command_group_code: 0x01,
		done: false,
		type: '退出工厂模式',
		buffer: [0x28, 0x28],
	},
];
// 首页读取定时器
Vue.prototype.READ_RECURRING_TASK = null;
Vue.prototype.BLUETOOTH_ALL_DATA = [];
Vue.prototype.main_change_var = {
	// 一次性函数
	once_req: false,
	repeat_once: true,
	page_canshow: false,

	timeout_loading: false,

	// 扫描日志
	bluetooth_scan_log_list: [],
	pulldown: 0,

	//可视区域上方高度 如自定义导航
	page_top: 0,
	//可视区域下方高度 如悬浮按钮
	page_bot: 0,
	//可视区域切换标签高度
	page_nav: 0,
	page_content_top: 0,

	//验证码发送频率
	page_iTime: 59,

	// 蓝牙某些不重要的数据暂存
	// 某个节点统一更新到 store中
	BLUETOOTH_DEVICE_TEMP: {},
};

// Vue.prototype.checkphone = /((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)/; //验证手机号码正则
Vue.prototype.checkphone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/; //验证手机号码正则

Vue.prototype.check_sn = /^[0-9]*$/; //验证电话正则

Vue.prototype.checkmobile = /^([0-9]{3,4}-)?[0-9]{7,8}$/; //验证电话正则
Vue.prototype.check_sfz = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; //验证身份证
Vue.prototype.check_name = /^[\u4e00-\u9fa5]{0,}$/; //验证姓名
Vue.prototype.check_number = /^(\-|\+)?\d+?$/; //验证正负数字

Vue.prototype.routerclick = true;

Vue.prototype.app_init = function () {
	let _this = this;
	uni.getSystemInfo({
		success(res) {
			// console.log(menuButtonInfo);
			let winW = res.windowWidth;
			let data = {};

			// #ifdef MP-WEIXIN
			let menuButtonInfo = uni.getMenuButtonBoundingClientRect();
			data[`statusBarHeight`] = _this.pxTorpx(menuButtonInfo.top, winW); // 状态栏高度
			// #endif

			// #ifdef APP-PLUS
			data[`statusBarHeight`] = _this.pxTorpx(res.statusBarHeight, winW); // 状态栏高度
			// #endif

			// console.log(res, 'app_init--getSystemInfo');
			data['phone_info'] = `${res.model}(${res.system})`; // 设备系统
			data['platform'] = res.platform; // 设备系统
			data[`is_${res.platform}`] = true; // 设备系统判断值
			data['version'] = res.SDKVersion; // 程序版本（小程序版本）
			data['safeAreaInsets_bot'] = _this.pxTorpx(res.safeAreaInsets.bottom, winW); // IOS底部安全距离
			data['device_bot'] = _this.pxTorpx(res.safeAreaInsets.bottom || 10, winW); // 元素安全距离

			data['win_width'] = _this.pxTorpx(res.windowWidth, winW); // 屏幕宽度
			data['versionCode'] = res.appVersionCode; // 1000
			data['versionCode_show'] = res.appWgtVersion || res.appVersion; //展示作用的版本号 1.00.0

			_this.store_set_state_config({ state_name: 'COMMON_VAR', data });
		},
	});
	return Vue.prototype;
};
// -------------  初始化

// 公用js方法封装
import { common } from '@/util/method.js';

for (let k in common) {
	Vue.prototype[k] = common[k];
}

import store from '@/store/store.js';
Vue.prototype.$store = store;

// App.mpType = 'app'
const app = new Vue({
	...App,
	store,
});
app.$mount();
